#include <iostream>
#include <vector>
#include <string>
#include "Buffer.hpp"

class Util
{
public:
    // 字符串分割函数--src字符串按照sep为间隔进行分割
    size_t Split(const std::string &src, const std::string &sep, std::vector<std::string> *arry)
    {
        size_t offset = 0;
        while(offset < src.size())
        {
            //从src中的offset位置开始查找sep字符/字符串
            size_t pos = src.find(sep, offset); 
            if(pos == std::string::npos) //没有找到特定字符,把剩下的字符串放到arry中
            {
                arry->push_back(src.substr(offset));
                return arry->size();
            }
            if(pos == offset)
            {
                offset = pos + sep.size();
                continue;
            }
            //找到了，截取字符串
            arry->push_back(src.substr(offset, pos - offset));
            offset = pos + sep.size();
        }
    }
    // 读取文件内容
    static bool ReadFile(const std::string &filename, Buffer *buffer);
    // 向文件写入内容
    static bool WriteFile();
    // URL编码
    static bool UrlEncode();
    // URL解码
    static bool UrlDecode();
    // 响应状态码的描述信息获取
    static std::string StatuDesc();
    // 根据文件后缀名获取文件mime
    static std::string ExtMime();
    // 判断一个文件是否是一个目录
    static bool IsDirectory();
    // 判断一个文件是否是一个普通文件
    static bool IsRegular();
    // HTTP资源路径的有效性判断
    static bool VaildPath();
};